#ifndef COMMTRAFF_HILOG_H
#define COMMTRAFF_HILOG_H

#include <stdio.h>
#include <stdbool.h>
#include <inttypes.h>

// 解决与collectd中LOG_DEBUG宏定义的冲突
#ifdef LOG_DEBUG
#undef LOG_DEBUG
#endif
#ifdef LOG_INFO
#undef LOG_INFO
#endif
#ifdef LOG_WARNING
#undef LOG_WARNING
#endif
#ifdef LOG_ERR
#undef LOG_ERR
#endif


#include "hilog/log.h"

#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif

#define LOG_PRINT_MAX_LEN 512

#define COMMTRAFF_HILOG_ID LOG_CORE
#define FILE_NAME   (__builtin_strrchr("/" __FILE__, '/') + 1)

typedef enum {
    COMMTRAFF_LOG_DBG,
    COMMTRAFF_LOG_INFO,
    COMMTRAFF_LOG_WARN,
    COMMTRAFF_LOG_ERROR,
    COMMTRAFF_LOG_LEVEL_MAX,
} CommtraffLogLevel;

void CommtraffLogOutPrint(const char *buf, CommtraffLogLevel level);


void CommtraffLog(CommtraffLogLevel level, const char *fmt, ...);

#define LOGD(fmt, ...)   \
    CommtraffLog(COMMTRAFF_LOG_DBG, fmt, ##__VA_ARGS__)
#define LOGI(fmt, ...)   \
    CommtraffLog(COMMTRAFF_LOG_INFO, fmt, ##__VA_ARGS__)
#define LOGW(fmt, ...)   \
    CommtraffLog(COMMTRAFF_LOG_WARN, fmt, ##__VA_ARGS__)
#define LOGE(fmt, ...)   \
    CommtraffLog(COMMTRAFF_LOG_ERROR, fmt, ##__VA_ARGS__)


#ifdef __cplusplus
#if __cplusplus
}
#endif /* __cplusplus */
#endif /* __cplusplus */


#endif //COMMTRAFF_HILOG_H